home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / tsrsrc22.arc / EATMEM.ASM next >
Assembly Source File  |  1985-08-07  |  2KB  |  90 lines

  1. ;use up memory by allocating and staying resident
  2. ;for memory size testing of various programs
  3. ;call as EATMEM kBytesToEat
  4. ;
  5. ;written 8/7/85 K. Kokkonen, TurboPower Software, 408-378-3672
  6.  
  7. eat     proc    far
  8.  
  9. ;parse command line to get amount of memory to eat
  10.     mov    si,81H        ;point to command line string
  11.     mov    di,offset(amount$) ;and to string storage area
  12.     xor    cx,cx        ;count chars in cx
  13.     cld
  14. getst    lodsb            ;get first non-blank
  15.     cmpb    al,' '
  16.     je    getst
  17.     cmpb    al,13        ;check for end of input
  18.     jne    more
  19.     mov    dx,offset(noinp$) ;no parameter specified ==>error
  20.     jmps    error
  21.  
  22. more    inc    cx
  23.     stosb            ;store the non-blank character
  24.     lodsb            ;get next char into al
  25.     cmpb    al,' '        ;terminate with <space> or <cr>
  26.     je    done
  27.     cmpb    al,13
  28.     je    done
  29.     jmps    more
  30.  
  31. ;convert amount$ to an integer in amount
  32. ;cx holds count of chars
  33. ;first put a terminator on amount
  34. done    mov    al,36
  35.     stosb            ;put string terminator on amount$
  36.     mov    si,offset(amount$)
  37.     mov    di,10
  38.     inc    cx
  39. nextc    dec    cx
  40.     jcxz    eatit        ;exit if all digits used
  41.  
  42.     mov    ax,amount    ;partial result into ax
  43.     mul    ax,di        ;multiply by 10 (should all fit in ax)
  44.     mov    amount,ax    ;store ax
  45.  
  46.     lodsb            ;next char into al
  47.     cmp    al,30H        ;make sure it's a digit
  48.     jb    baddig
  49.       cmp    al,39H
  50.     ja    baddig
  51.     and    al,0FH        ;convert to digit
  52.     xor    ah,ah
  53.     add    amount,ax    ;add to amount
  54.     jmps    nextc
  55.  
  56. ;calculate the paragraphs to eat up
  57. eatit    mov    dx,amount
  58.     cmp    dx,512
  59.     ja    baddig        ;don't eat more than 512k
  60.     push    dx
  61.  
  62. ;show a success message
  63.     mov    dx,offset(succ1$)
  64.     mov    ah,9
  65.     int    21H
  66.     mov    dx,offset(succ2$)
  67.     mov    ah,9
  68.     int    21H
  69.  
  70. ;eat up the memory (must reboot to free)
  71.     pop    dx
  72.     mov    cl,6
  73.     shl    dx,cl        ;convert kB to paras
  74.     mov    ax,3100H    ;return code 0
  75.     int    21H        ;exit and remain resident
  76.  
  77. baddig    mov    dx,offset(baddig$)
  78.  
  79. error    mov    ah,9
  80.     int    21H
  81.     int    20H
  82.  
  83. succ1$    db    13,10,'Eating up '
  84. amount$ db    0,0,0,0        ;string holding amount of kB
  85. succ2$    db    ' kBytes of RAM space',13,10,36
  86. amount    db    0,0        ;integer holding amount of kb, then paras
  87. noinp$  db    13,10,'No parameter specified. Usage: EATMEM kBtoEat',13,10,36
  88. baddig$ db      13,10,'Bad number of kB specified',13,10,36
  89.  
  90.     endp